package model;

import ar.edu.unq.tpi.pconc.Channel;

public class Batalla {

	/**
	 * @param args
	 */

	private static Batalla batalla = null;

	private ZonaBatalla lugarDeBatalla;
	private Unidad atacante;
	private Unidad defensor;
	private Unidad ganador;

	public Batalla(ZonaBatalla zona) {
		this.lugarDeBatalla = zona;
	}

	public Unidad getAtacante() {
		return atacante;
	}

	public void setAtacante(Unidad atacante) {
		this.atacante = atacante;
	}

	public Unidad getDefensor() {
		return defensor;
	}

	public void setDefensor(Unidad defensor) {
		this.defensor = defensor;
	}

	public Unidad getGanador() {
		return ganador;
	}

	public void setGanador(Unidad ganador) {
		this.ganador = ganador;
	}

	public ZonaBatalla getLugarDeBatalla() {
		return lugarDeBatalla;
	}

	public void setLugarDeBatalla(ZonaBatalla lugarDeBatalla) {
		this.lugarDeBatalla = lugarDeBatalla;
	}

	public static Batalla getInstance(ZonaBatalla zona) {
		if (batalla == null) {
			batalla = new Batalla(zona);
		}

		return batalla;
	}

	private double calculoDeProbabilidadDePeleaGanada() {
		return this.getAtacante().getNivel()
				/ (this.getAtacante().getNivel() + this.getDefensor()
						.getNivel());
	}

	public void comenzarPelea(Unidad atacante, Unidad defensor) {
		this.setAtacante(atacante);
		this.setDefensor(defensor);
		System.err.println("PELEA PELEA PELEAAA PELEAAA");
		double random = Math.random();
		if (random < this.calculoDeProbabilidadDePeleaGanada()) {
			this.getLugarDeBatalla().setUnidadActual(this.getDefensor());
			this.getDefensor().avisarQueGano();
			this.getAtacante().avisarQuePerdio();
		} else {
			this.getLugarDeBatalla().setUnidadActual(this.getAtacante());
			this.getAtacante().avisarQueGano();
			this.getDefensor().avisarQuePerdio();
		}
		
		
	}
	
}
